package torres.entity;
import java.util.*;



/**
 * @author Torres
 * A specific Occupation that specializes in hand-to-hand combat.
 * The primary stat of this Occupation is Strength.
 */
@SuppressWarnings("serial")
public class Smasher implements Occupation {
	private List<Ability> smasherAbilityList;
	private final Stat smasherPrimaryStat = Stat.STRENGTH;
	private final Job job = Job.SMASHER;
	private double smasherStrengthMultiplier;
	private double smasherAgilityMultiplier;
	private double smasherIntellectMultiplier;
	private final String name = "Smasher";
	
	/**
	 * Creates a default Smasher
	 */
	public Smasher() { // Default Constructor
		smasherAbilityList = new ArrayList<Ability>();
		smasherStrengthMultiplier = 1.3;
		smasherAgilityMultiplier = 1.15;
		smasherIntellectMultiplier = 1.15;
	}
	
	/**
	 * Creates a new Smasher with the specified values. 
	 * @param abilityList The ability list.
	 * @param strength The strength multiplier.
	 * @param agility The agility multiplier.
	 * @param intellect The intellect multiplier.
	 */
	public Smasher(List<Ability> abilityList, double strength, double agility, double intellect) {
		this.smasherAbilityList = abilityList;
		this.smasherStrengthMultiplier = strength;
		this.smasherAgilityMultiplier = agility;
		this.smasherIntellectMultiplier = intellect;
	}

	/* (non-Javadoc)
	 * @see torres.entity.Occupation#getAgilityMultiplier()
	 */
	public double getAgilityMultiplier() {
		return smasherAgilityMultiplier;
	}

	/* (non-Javadoc)
	 * @see torres.entity.Occupation#getIntellectMultiplier()
	 */
	public double getIntellectMultiplier() {
		return smasherIntellectMultiplier;
	}

	/* (non-Javadoc)
	 * @see torres.entity.Occupation#getPrimaryStat()
	 */
	public Stat getPrimaryStat() {
		return smasherPrimaryStat;
	}

	/* (non-Javadoc)
	 * @see torres.entity.Occupation#getStrengthMultiplier()
	 */
	public double getStrengthMultiplier() {
		return smasherStrengthMultiplier;
	}

	/* (non-Javadoc)
	 * @see torres.entity.Occupation#getAbilityList()
	 */
	public List<Ability> getAbilityList() {
		return smasherAbilityList;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return name;
	}
	
	/* (non-Javadoc)
	 * @see torres.entity.Occupation#getJob()
	 */
	@Override
	public Job getJob() {
		return job;
	}
}
